본문으로 건너뛰기

아이템12

함수 표현식에 타입 적용하기

  • 타입스크립트에선 함수 문장함수 표현식을 다르게 인식한다.
  • 함수의 매개변수부터 반환식까지의 재사용이 가능한 타입스크립트에선 되도록 함수 표현식을 사용하는 것이 좋다.
// 함수 선언문 (문장)
function rollDice1(sides: number): number {
/*...*/
}

// 함수 표현식
const rollDice2 = function (sides: number): number {
/*...*/
};
const rollDice3 = (sides: number): number => {
/*...*/
};
// 재활용 예시
type BinaryFn = (a: number, b: number) => number;
const add: BinaryFn = (a: number, b: number) => { return a + b };
const sub: BinaryFn = (a: number, b: number) => { return a - b };
const mul: BinaryFn = (a: number, b: number) => { return a * b };
const div: BinaryFn = (a: number, b: number) => { return a / b };

FETCH에서 사용

const checkedFetch: typeof fetch = async(input, init) => {
const response = await fetch(input, init)
if(!response.ok) {
throw new Error(`Request failed: ${response.status}`)
}
}

정리

  • 같은 타입 시그니처 반보고디면 함수 타입을 분리해보자
  • 다른 함수의 시그니처 참조를 위해선 typeof fn을 사용해보자